﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EBAYVN.DAO;
using EBAYVN.DOMAIN;
using EBAYVN.Util;

namespace EBAYVN.CUSTOMERS.Pages
{
    public partial class DangKi : System.Web.UI.Page
    {
       public KhachHangDao khDAO = new KhachHangDao();
       private readonly TinhThanhDao ttDao = new TinhThanhDao();
       private readonly QuocGiaDao qgDao = new QuocGiaDao();
        #region Properties
        protected KHACHHANG obj
        {
            get
            {
                var KH= new KHACHHANG
                {
                    MAKH=0,
                    HOTEN  = txtHoTen.Text.Trim(),
                    EMAIL=txtEmail.Text.Trim(),
                    TENCTY=txtTenCongTy.Text.Trim(),
                    WEBSITE=txtWebSite.Text.Trim(),
                    DIENTHOAI=txtDienThoai.Text.Trim(),
                    DIACHI=txtDiaChi.Text.Trim(),
                    USERNAME=txtTenDangNhap.Text.Trim(),
                    PASSWORD=txtMatKhau.Text.Trim(),
                    GIOITINH=ddlGioiTinh.SelectedValue.Equals("1")?true:false,
                    MAQUOCGIA=ddlQuocGia.SelectedValue,
                    MATINHTHANH= int.Parse(ddlTinhThanh.SelectedValue),
                    MABAOMAT=CommonUtil.Encrypt(txtMaBaoMat.Text.Trim(),true),
                    NGAYDANGKY=DateTime.Now,
                    HANDANGKY=20,
                    TRANGTHAI=TTDANGKY.DK_A.ToString(),
                };
                var tinhthanh = ttDao.Get(int.Parse(ddlTinhThanh.SelectedValue));
                KH.MABUUDIEN = tinhthanh.MATINH;
                return KH;
            }

        }
        #endregion 
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                LoadReference();
            }
        }
        #region Windows Show
        private void ShowError(string message, string controlId)
        {
            ((EBAYVN)Page.Master).ShowError(message, controlId);
        }

        private void ShowError(string message)
        {
            ((EBAYVN)Page.Master).ShowError(message);
        }

        private void ShowInfor(string message)
        {
            ((EBAYVN)Page.Master).ShowInfor(message);
        }

        private void CloseWaitingDialog()
        {
            ((EBAYVN)Page.Master).CloseWaitingDialog();
        }

        private void SetReadonly(string id, bool isReadonly)
        {
            ((EBAYVN)Page.Master).SetReadonly(id, isReadonly);
        }

        private void SetControlValue(string id, string value)
        {
            ((EBAYVN)Page.Master).SetControlValue(id, value);
        }

        private void HideDialog(string divId)
        {
            ((EBAYVN)Page.Master).HideDialog(divId);
        }

        private void UnblockDialog(string divId)
        {
            ((EBAYVN)Page.Master).UnblockDialog(divId);
        }
        #endregion

        private void LoadReference()
        {
            CommonUtil.BindDropDownList(ddlTinhThanh, ttDao.GetList(), "TENTINHTHANH", "ID", false);
            CommonUtil.BindDropDownList(ddlQuocGia, qgDao.GetList(), "TENQUOCGIA", "MAQUOCGIA", false);
        }
        private bool IsValid()
        {
            if (String.IsNullOrEmpty(txtTenDangNhap.Text))
            {
                ShowError("Tên đăng nhập không được trống", txtTenDangNhap.ClientID);
                return false;
            }
            if (txtTenDangNhap.Text.Contains(' '))
            {
                ShowError("Mật khẩu không được chứa kí tự khoảng trắng", txtMatKhau.ClientID);
                return false;
            }
            var kh = khDAO.GetByUser(txtTenDangNhap.Text.Trim());
            {
                if(kh!=null)
                {
                    ShowError("Tên đăng nhập đã tồn tại", txtTenDangNhap.ClientID);
                    return false;
                }
            }
            if (String.IsNullOrEmpty(txtEmail.Text.Trim()))
            {
                ShowError("Email không được để trống", txtEmail.ClientID);
                return false;
            }
            if(khDAO.GetByEmail(txtEmail.Text.Trim())!=null)
            {
                ShowError("Email đã được sử dụng", txtEmail.ClientID);
                return false;
            }
            if (String.IsNullOrEmpty(txtMatKhau.Text.Trim()))
            {
                ShowError("Mật khẩu không được để trống", txtMatKhau.ClientID);
                return false;
            }
            if (txtMatKhau.Text.Length < 6)
            {
                ShowError("Mật khẩu ít nhất 6 kí tự", txtMatKhauRe.ClientID);
                return false;
            }
            if (String.IsNullOrEmpty(txtMatKhauRe.Text.Trim()))
            {
                ShowError("Mật khẩu không được để trống", txtMatKhauRe.ClientID);
                return false;
            }
            
            if(txtMatKhauRe.Text.Contains(' '))
            {
                ShowError("Mật khẩu không được chứa kí tự đăc biệt", txtMatKhauRe.ClientID);
                return false;
            }
            if(!txtMatKhauRe.Text.Equals(txtMatKhau.Text.Trim()))
            {
                ShowError("Mật khẩu gõ lại không đúng với mật khẩu ban đầu", txtMatKhauRe.ClientID);
                return false;
            }
            if (String.IsNullOrEmpty(txtHoTen.Text.Trim()))
            {
                ShowError("Họ tên không được để trống", txtHoTen.ClientID);
                return false;
            }
            if (String.IsNullOrEmpty(txtDienThoai.Text.Trim()))
            {
                ShowError("Điện thoại không được để trống", txtDienThoai.ClientID);
                return false;
            }
            if (String.IsNullOrEmpty(txtDiaChi.Text.Trim()))
            {
                ShowError("Địa chỉ không được để trống", txtDiaChi.ClientID);
                return false;
            }
            ccJoin.ValidateCaptcha(txtCapchar.Text.Trim());
            if (!ccJoin.UserValidated )
            {
                ShowError("Mã capcha không chính xác vui lòng gõ lại");
                return false;
            }
            return true;
        }
        protected void btnDangKi_Click(object sender, EventArgs e)
        {
            if (!IsValid())
            {
                lbThongBaoLoi.Text = "Đăng kí không thành công";
                upThongBao.Update();
                CloseWaitingDialog();
                return;
            }
            
            var kh = obj;
            Message msg;
            msg = khDAO.Insert(kh);
            if (msg.MsgType == MessageType.Error)
            {
                lbThongBaoLoi.Text = "Đăng kí không thành công.Vui lòng đăng kí lại";
                lbThongBao.Text = "";
                upThongBao.Update();
            }
            else
            {
                ShowInfor("Đăng ký thành công");
                CloseWaitingDialog();
                Response.Redirect("Default.aspx", true);
                //lbThongBao.Text = "Đăng kí thành công. <br />Bạn có thể <a href='Login.aspx' tilte='Đăng nhập' >Đăng nhập</a>";
                //lbThongBaoLoi.Text = "";
                //upThongBao.Update();
            }
            CloseWaitingDialog();
        }
        private void ClearForm()
        {
            txtTenDangNhap.Text = "";
            txtHoTen.Text = "";
            txtEmail.Text = "";
            txtDiaChi.Text = "";
            txtDienThoai.Text = "";
            txtWebSite.Text = "";
            txtTenCongTy.Text = "";
            upInfor.Update();
        }
        protected void btnCancel_Click(object sender, EventArgs e)
        {
            ClearForm();
            CloseWaitingDialog();
        }
        protected void ddlQuocGia_OnChange(object sender, EventArgs e)
        {
            var tinhthanhlist = ttDao.GetListByQuocGia(ddlQuocGia.SelectedValue);
            CommonUtil.BindDropDownList(ddlTinhThanh, tinhthanhlist, "TENTINHTHANH", "ID", false);
        }
    }
}
